% !Mode:: "TeX:UTF-8"

\chapter{项目测试文档}

\section{项目概述}
随着生活节奏的加快，外卖服务已成为现代都市人日常生活中不可或缺的一部分。
“饿了么“项目旨在打造一个集在线订餐、即时配送、商家入驻、用户评价等功能于一体的综合性外卖服务平台，
满足用户多样化、便捷化的饮食需求，同时为商家提供高效的线上销售渠道。

本测试文档旨在全面覆盖饿了么前端及后端服务系统的功能测试、性能测试、安全测试等方面，确保产品质量，提升用户体验。

\section{测试目标}
\begin{itemize}
   \item {功能验证}：确保所有功能模块按需求规格说明书正确实现，包括但不限于用户注册登录、浏览餐厅与菜品、下单支付、订单管理、评价反馈等。
   \item {性能评估}：测试系统在高并发、大数据量情况下的处理能力，包括响应时间等。
   \item {安全测试}：识别并修复潜在的安全漏洞，保护用户数据安全及系统稳定。
   \item {用户体验测试}：从用户角度出发，评估界面友好性、操作便捷性、反馈及时性等。

\end{itemize}
\section{测试环境}

\subsection{前端测试环境}

\begin{itemize}
   \item 操作系统：Windows 
   \item 编辑器：Hbuilder 
   \item 浏览器：Gooogle Chrome 
   \item 版本控制：Git
   \item 前端框架：Vue 3.2.13、VueCli 5.0.0 
   \item 包管理工具：npm 9.8.1 
   \item 调试工具：Chrome DevTools
   
\end{itemize}
\subsection{后端测试环境}

\begin{itemize}
   \item maven 版本设置：maven-3.6.2 
   \item tomcat 版本设置：tomcat-9.0.79 
   \item 文件编码配置：utf-8 
   \item 开发工具的 jdk 配置：jdk8 
   \item 数据库编码形式：utf8mb4 
   \item STS 版本设置: STS（SpringToolSuite4） 
   \item IDEA 版本设置：2023.1.3 
\end{itemize}

\section{测试范围}

\subsection{前端应用测试}
\begin{itemize}
   \item Web端：测试网站在PC端和移动端的显示效果及功能表现，
   包括注册登录、浏览菜品、下单支付、订单管理、评价反馈等核心功能。
\end{itemize}

\subsection{后端服务测试}

\begin{itemize}
   \item	订单处理系统：测试订单生成、支付验证、状态更新等流程。
   用户管理系统：测试用户信息注册、登录、修改、删除等操作。
   \item	商家管理系统：测试商家入驻、菜品管理、订单处理、营销活动设置等功能。
   
\end{itemize}

\subsection{数据库测试}

\begin{itemize}
   \item	数据一致性：确保数据库中的数据在不同操作下保持一致。
   \item	数据完整性：检查数据是否完整无缺，符合业务规则。
   \item	查询效率：优化数据库查询语句，提高数据检索速度。
   
\end{itemize}

\section{测试策略}
\subsection{updateUserPassword}
\begin{itemize}
   \item 目的: 验证更新用户密码的功能。
   \item 输入:
   
   userId: "user"

   Oldpassword: "oldpassword"

   Newpassword: "newpassword"
   \item 预期结果:

   返回1，表示密码已成功更新。
   \item 步骤:

   准备数据库，确保存在用户ID为"user1"且旧密码为"oldpassword123"的记录。
   
   调用updateUserPassword方法。
   
   验证数据库中的用户密码是否已更新为"newpassword123"。
   
\end{itemize}
\subsection{getOrdersById}
\begin{itemize}
   \item 目的: 验证根据订单ID获取订单信息的功能。
   \item 输入: orderId: 3
   \item 预期结果:
   
   返回一个订单对象，包含订单的详细信息以及订单明细。
   \item 步骤:
   
   准备数据库，确保存在订单记录。
   
   调用getOrdersById方法。
   
   验证返回的订单对象是否与数据库中的记录匹配。
   
\end{itemize}

\subsection{formPassToDBPass}
\begin{itemize}
   \item 目的：实现数据库密码的MD5+随机盐值加密，保护用户个人信息安全。
   \item 输入：
   
   新注册用户手机号：“xxxxxxxxxxx“
   
   新注册用户密码：“123456“
   \item 预期结果：返回一个加密后的用户密码。
   \item 步骤：
   
   新注册用户，设置用户ID及用户密码，验证数据库中相应用户密码为加密形式。
   
\end{itemize}
\subsection{listBusinessByBusinessName}
\begin{itemize}
   \item 目的：实现商家列表的关键词模糊查询。
   \item 输入：相关BusinessName的关键字。
   \item 预期结果：
   
   返回一个相应的符合关键词检索条件的商家列表。
   \item 步骤：
   
   利用Postman进行相关操作后对接口进行测试，验证输出结果是否与逻辑一致。
   
\end{itemize}
\section{测试用例}
\begin{enumerate}
   \item	正常注册流程：
\begin{itemize}
   \item	输入有效的手机号码和验证码。
   \item	设置密码并确认密码。
   \item	点击注册按钮，检查是否成功注册并跳转到登录页面。
   
\end{itemize}

\item 		手机号码格式错误：

\begin{itemize}
\item	输入格式不正确的手机号码（如缺少数字、包含字母等）。
\item	点击注册按钮，检查是否提示手机号码格式错误。

\end{itemize}

\item 	验证码错误：

\begin{itemize}
   \item	输入正确的手机号码但错误的验证码。
   \item	点击注册按钮，检查是否提示验证码错误。
   
\end{itemize}

\item 	密码不符合要求：

\begin{itemize}
   \item	设置密码过短（如少于6位）。
   \item	设置密码不符合复杂度要求（如只包含数字或字母）。
   \item	点击注册按钮，检查是否提示密码不符合要求。
   
\end{itemize}

\item 	密码不一致：

\begin{itemize}
   \item	设置密码和确认密码不一致。
   \item	点击注册按钮，检查是否提示密码不一致。
   
\end{itemize}

\item 重复注册：

\begin{itemize}
   \item	使用已注册的手机号码进行注册。
   \item	点击注册按钮，检查是否提示该手机号码已注册。
   
\end{itemize}

\item	登录功能测试：

\begin{itemize}
   \item	输入正确的手机号码和密码。
   \item	点击登录按钮，检查是否成功登录并跳转到首页。
   
\end{itemize}

\item 	手机号码错误：

\begin{itemize}
   \item	输入不存在的手机号码进行登录。
   \item	点击登录按钮，检查是否提示手机号码不存在。
   
\end{itemize}

\item 密码错误：

\begin{itemize}
   \item	输入正确的手机号码但错误的密码。
   \item	点击登录按钮，检查是否提示密码错误。
   
\end{itemize}
\end{enumerate}

\section{测试结果}

\begin{figure}[htbp]
   \centering
   \includegraphics[width=0.4\textwidth]{test1}
   \caption{部分测试结果}\label{fig:test1}
   \vspace{\baselineskip}
   \end{figure}

   \begin{figure}[htbp]
      \centering
      \includegraphics[width=0.4\textwidth]{test2}
      \caption{部分测试结果}\label{fig:test2}
      \vspace{\baselineskip}
      \end{figure}
